//#include <iostream>
//#include <queue>
//#include <cstring>
//using namespace std;
//
//const int N = 1010;
//
//int dx[] = { 0, 0, 1, -1 };
//int dy[] = { 1, -1, 0, 0 };
//
//int n, m;
//int a[N][N] = { 0 };
//bool st[N][N] = { 0 };
//
//bool ans(int w)
//{
//	memset(st, 0, sizeof(st));
//	queue<pair<int, int>> q;
//	for (int i = 1; i <= m; i++)
//	{
//		q.push({ 1, i });
//	}
//
//	while (q.size())
//	{
//		auto t = q.front();
//		q.pop();
//
//		int x = t.first;
//		int y = t.second;
//
//		for (int k = 0; k < 4; k++)
//		{
//			int i = x + dx[k];
//			int j = y + dy[k];
//			if (i >= 1 && i <= n && j >= 1 && j <= m && st[i][j] == 0 && a[i][j] <= w)
//			{
//				if (i == n)
//					return true;
//				st[i][j] = 1;
//				q.push({ i, j });
//			}
//		}
//	}
//
//	return false;
//}
//
//int main()
//{
//	cin >> n >> m;
//	for (int i = 1; i <= n; i++)
//	{
//		for (int j = 1; j <= m; j++)
//		{
//			cin >> a[i][j];
//		}
//	}
//
//	int l = 0;
//	int r = 1e9;
//
//	while (l < r)
//	{
//		int mid = (r + l) / 2;
//		if (ans(mid))
//		{
//			r = mid;
//		}
//		else
//		{
//			l = mid + 1;
//		}
//	}
//	
//	cout << l << endl;
//
//	return 0;
//}



//#include <iostream>
//#include <vector>
//using namespace std;
//
//vector<bool> st(12, 0);
//bool flag = 0;
//int x, y, z;
//
//void dfs(double num, int n)
//{
//	if (n == 3)
//	{
//		int yy = (int)(num * y / x);
//		int zz = (int)(num * z / x);
//		if (num * y / x != yy || num * z / x != zz)
//			return;
//		
//
//		vector<bool> fg = st;
//
//		while (yy)
//		{
//			int mod = yy % 10;
//			if (mod == 0)
//				return;
//			if (fg[mod])
//				return;
//
//			fg[mod] = 1;
//			yy /= 10;
//		}
//
//		while (zz)
//		{
//			int mod = zz % 10;
//			if (mod == 0)
//				return;
//			if (fg[mod])
//				return;
//
//			fg[mod] = 1;
//			zz /= 10;
//		}
//
//		flag = 1;
//		cout << num << " " << (int)(num * y / x) << " " << (int)(num * z / x) << endl;
//
//		return;
//	}
//
//	for (int i = 1; i <= 9; i++)
//	{
//		if (st[i] == 1)
//			continue;
//
//		st[i] = 1;
//		dfs(num * 10 + i, n + 1);
//		st[i] = 0;
//	}
//}
//
//int main()
//{
//	cin >> x >> y >> z;
//
//
//	dfs(0, 0);
//
//	if (flag == 0)
//	{
//		cout << "No!!!" << endl;
//	}
//
//	return 0;
//}


//#include <iostream>
//#include <vector>
//using namespace std;
//
//int n, r;
//vector<int> path;
//
//void dfs(int x, int c)
//{
//	if (c == r)
//	{
//		for (auto ch : path)
//		{
//			printf("%3d", ch);
//		}
//		cout << endl;
//		return;
//	}
//	for (int i = x; i <= n; i++)
//	{
//		path.push_back(i);
//		dfs(i + 1, c + 1);
//		path.pop_back();
//	}
//}
//
//int main()
//{
//	cin >> n >> r;
//	dfs(1, 0);
//
//	return 0;
//}


#include <iostream>
#include <unordered_map>
using namespace std;

int n, q;
unordered_map<int, int> mp;

int main()
{
	cin >> n;
	for (int i = 1; i <= n; i++)
	{
		int x;
		cin >> x;
		mp[x] = i;
	}
	cin >> q;
	while (q--)
	{
		int x;
		cin >> x;
		if (mp.count(x))
			cout << mp[x] << endl;
		else
			cout << 0 << endl;
	}
	return 0;
}
